home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
oper_sys
/
oasis
/
oasisegs.lha
/
egs
/
mmul.d
< prev
next >
Wrap
Text File
|
1992-04-23
|
3KB
|
70 lines
/*======================================================================================================
Auxiliary Data Structure
======================================================================================================*/
class matrix {
attribute:
public int size; # matrix size
int[_,_] mat; # matrix
private int seed = 197; # random number seed
method:
public gen (int I).
private loop (int I, J).
}
matrix {
gen(size).
gen(I') |- loop(I,I+1);
gen(I+1). # go thru rows
loop(_, size).
loop(I', J') |- seed' = (4757 * seed + 1) % 32768;
(int) B' = 1 + ((seed / 16) % 256); # random number
mat[I,J]' = B; # initialize (i,j)
mat[J,I]' = B; # symmetric (j,i)
loop(I, J+1). # go thru columns
}
/*======================================================================================================
tsp Specification
======================================================================================================*/
class mmul {
constant: int n = 64; # n x n matrices
attribute:
protected int[_,_] a = $[n,n];
int[_,_] b = $[n,n];
int[_,_] c = $[n,n];
method:
private loop (int M).
mmul (int I).
more (int J, I).
inner (int K, J, I, S).
public run (int M).
}
/*======================================================================================================
tsp Implementation
======================================================================================================*/
mmul {
loop(0).
loop(M') |- mmul(n-1); loop(M-1).
mmul(0) |- more(n-1,0).
mmul(I') |- more(n-1,I); mmul(I-1).
more(0,I') |- inner(n-1,0,I,0).
more(J',I') |- inner(n-1,J,I,0); more(J-1,I).
inner(0, J',I',S') |- c[I,J]' = S+a[I,0]*b[0,J].
inner(K',J',I',S') |- inner(K-1,J,I,S+a[I,K]*b[K,J]).
run(M') |- (matrix) A' = matrix{n,a}; # create multiplicand
(matrix) B' = matrix{n,b}; # create multipler
A ! gen(0); # generate random elements
B ! gen(0); # generate random elements
loop(M). # do multiplication
}
/*======================================================================================================
The End
======================================================================================================*/